﻿
namespace SharpTag.ID3
{
    /// <summary>
    /// Represents flags found in <see cref="IFrameHeader"/> objects.
    /// </summary>
    public enum FrameHeaderFlag
    {
        /// <summary>
        /// Signifies that the Frame should be discarded if the tag is changed.
        /// </summary>
        TagAlterPreservation,
        /// <summary>
        /// Signifies that the Frame should be discarded if the file (excluding the tag) is changed.
        /// </summary>
        FileAlterPreservation,
        /// <summary>
        /// Signifies that the Frame is meant to be read-only.
        /// </summary>
        ReadOnly,
        /// <summary>
        /// Signifies that this Frame belongs in a group with other Frames.
        /// </summary>
        GroupingIdentity,
        /// <summary>
        /// Signifies that this Frame is compressed using the zlib deflate method.
        /// </summary>
        /// <remarks>This flag being set requires the 'Data Length Indicator' bit to be set as well.</remarks>
        Compression,
        /// <summary>
        /// Signifies that this Frame is encrypted.
        /// </summary>
        /// <remarks>Encryption registration information is found in the 'ENCR' Frame.  Encryption should be done after Compression.</remarks>
        Encryption,
        /// <summary>
        /// Signifies that this Frame has been unsynchronised.
        /// </summary>
        Unsynchronisation,
        /// <summary>
        /// Signifies that a Data Length Indicator has been added to the Frame.
        /// </summary>
        /// <remarks>The Data Length Indicator is teh value one would write as teh 'Frame Length' if all of the Frame format flags were zeroed, represented as a 32 bit syncsafe integer.</remarks>
        DataLengthIndicator
    }
}
